iBATIS (বর্তমানে MyBatis নামে পরিচিত) একটি ওপেন সোর্স Java persistence framework যা SQL এবং Java object-গুলির মধ্যে ম্যাপিং করতে ব্যবহৃত হয়। iBATIS SQL ম্যাপিং ব্যবস্থাপনা সহজ করে এবং আপনাকে SQL কোডকে Java কোডের সাথে একীভূত করতে সক্ষম করে। এটি Hibernate এর মতো ORM ফ্রেমওয়ার্কের তুলনায় অনেক বেশি কাস্টমাইজযোগ্য, কারণ এটি SQL-কে আলাদাভাবে পরিচালনা করতে দেয়।
iBATIS (MyBatis)-এর সাথে ডেটাবেস সংযোগ সেটআপ করার জন্য, কয়েকটি সাধারণ পদক্ষেপ রয়েছে, যেগুলি আপনাকে DataSource, SQL Session, এবং Configuration তৈরি করতে সাহায্য করবে। নিচে iBATIS Database Connection Setup এর স্টেপ-by-স্টেপ গাইড দেওয়া হলো:
1. iBATIS/MyBatis Dependency Setup
প্রথমে, আপনাকে Maven বা Gradle ব্যবহার করে iBATIS (MyBatis) ফ্রেমওয়ার্কের ডিপেন্ডেন্সি যুক্ত করতে হবে। যদি আপনি Maven ব্যবহার করেন, তাহলে আপনার pom.xml ফাইলে নিচের ডিপেন্ডেন্সিটি যোগ করুন:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version> <!-- Use the latest version -->
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version> <!-- MySQL JDBC driver -->
</dependency>
এছাড়া, যদি Gradle ব্যবহার করেন, তাহলে ডিপেন্ডেন্সি হিসেবে নিচের কোডটি ব্যবহার করতে পারেন:
implementation 'org.mybatis:mybatis:3.5.6' // MyBatis dependency
implementation 'mysql:mysql-connector-java:8.0.23' // MySQL JDBC driver
2. Configure the SqlSessionFactory and DataSource
iBATIS-এ SqlSessionFactory তৈরি করার জন্য আপনাকে DataSource এবং Configuration কনফিগার করতে হবে। সাধারণত, SqlSessionFactory-এর জন্য XML Configuration ফাইল ব্যবহার করা হয় যা ডেটাবেস কনফিগারেশন এবং SQL ম্যাপিং ফাইলগুলো লোড করে।
a) Create mybatis-config.xml for Configuration:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- JDBC database connection settings -->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/your_database_name"/>
<property name="username" value="your_database_username"/>
<property name="password" value="your_database_password"/>
</dataSource>
</environment>
</environments>
<!-- Mapper files -->
<mappers>
<mapper resource="com/example/mappers/StudentMapper.xml"/>
</mappers>
</configuration>
<dataSource type="POOLED">: এখানে আপনি POOLED ডেটাসোর্স ব্যবহার করছেন, যা JDBC কানেকশন পুলিং সক্ষম করে এবং ডেটাবেসের সাথে কার্যকর যোগাযোগ নিশ্চিত করে।<property name="driver" value="com.mysql.cj.jdbc.Driver"/>: এখানে ডেটাবেস ড্রাইভার উল্লেখ করা হয়েছে (এটা MySQL এর জন্য)।<property name="url" value="jdbc:mysql://localhost:3306/your_database_name"/>: এখানে ডেটাবেসের URL এবং অন্যান্য তথ্য উল্লেখ করতে হবে।<mappers>: আপনি যেসব SQL ম্যাপিং ফাইল ব্যবহার করবেন তা এখানে উল্লেখ করতে হবে।
b) Create SqlSessionFactory in Java:
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.builder.xml.XMLConfigBuilder;
import java.io.InputStream;
import java.io.IOException;
public class MyBatisUtil {
private static SqlSessionFactory sessionFactory;
static {
try {
// Load MyBatis configuration file
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
// Method to get a SqlSession
public static SqlSession getSession() {
return sessionFactory.openSession();
}
}
এখানে, SqlSessionFactory তৈরি করার জন্য mybatis-config.xml ফাইলটি লোড করা হচ্ছে, এবং getSession() মেথডের মাধ্যমে SqlSession তৈরি করা হচ্ছে, যেটি ডেটাবেস অপারেশন পরিচালনা করতে সাহায্য করবে।
3. Create Mapper XML File
iBATIS (MyBatis)-এ SQL Queries সাধারণত Mapper XML ফাইলে সংরক্ষিত হয়। এখানে StudentMapper.xml নামের একটি উদাহরণ দেওয়া হলো, যেখানে select, insert, update, এবং delete অপারেশন করা হয়েছে।
Example: StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mappers.StudentMapper">
<!-- Select Query for retrieving a Student by ID -->
<select id="selectStudent" resultType="com.example.Student">
SELECT * FROM student WHERE id = #{id}
</select>
<!-- Insert Query for adding a new student -->
<insert id="insertStudent" parameterType="com.example.Student">
INSERT INTO student (name, course) VALUES (#{name}, #{course})
</insert>
<!-- Update Query for updating student details -->
<update id="updateStudent" parameterType="com.example.Student">
UPDATE student SET name = #{name}, course = #{course} WHERE id = #{id}
</update>
<!-- Delete Query for deleting a student -->
<delete id="deleteStudent" parameterType="int">
DELETE FROM student WHERE id = #{id}
</delete>
</mapper>
Explanation:
<select>: SQL SELECT কোয়েরি যাStudentঅবজেক্ট লোড করবে।<insert>: SQL INSERT কোয়েরি, যা একটি নতুন ছাত্র ইনসার্ট করবে।<update>: SQL UPDATE কোয়েরি, যা ছাত্রের তথ্য আপডেট করবে।<delete>: SQL DELETE কোয়েরি, যা ছাত্র মুছে ফেলবে।
4. Interact with the Database
ম্যাপার ফাইল কনফিগার করার পর, Java ক্লাসে SqlSession ব্যবহার করে ডেটাবেস অপারেশন চালানো হয়।
Example: Interacting with Database (Student DAO)
import org.apache.ibatis.session.SqlSession;
import com.example.Student;
import com.example.mappers.StudentMapper;
public class StudentDAO {
public void saveStudent(Student student) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.insertStudent(student); // Calling insert operation
session.commit(); // Commit the transaction
}
}
public Student getStudentById(int id) {
try (SqlSession session = MyBatisUtil.getSession()) {
StudentMapper mapper = session.getMapper(StudentMapper.class);
return mapper.selectStudent(id); // Calling select operation
}
}
}
Explanation:
getMapper(): এটি SQL কোয়েরি চালানোর জন্য উপযুক্ত mapper ইন্টারফেসের একটি ইনস্ট্যান্স রিটার্ন করে।commit(): ডেটাবেসে করা পরিবর্তনগুলো সেভ করতে commit() মেথড কল করা হয়।
5. Using Transactions in iBATIS
iBATIS (MyBatis) এ ট্রানজেকশন ব্যবস্থাপনা সেশন (Session) এর মাধ্যমে পরিচালিত হয়। আপনি commit() এবং rollback() মেথড ব্যবহার করে ট্রানজেকশন ম্যানেজ করতে পারেন।
Example: Using Transactions
public void updateStudent(Student student) {
SqlSession session = MyBatisUtil.getSession();
try {
StudentMapper mapper = session.getMapper(StudentMapper.class);
mapper.updateStudent(student);
session.commit(); // Commit the transaction
} catch (Exception e) {
session.rollback(); // Rollback in case of error
e.printStackTrace();
} finally {
session.close();
}
}
iBATIS (MyBatis) হল একটি শক্তিশালী এবং নমনীয় পদ্ধতি যা Java অ্যাপ্লিকেশনকে ডেটাবেসের সাথে সংযোগ করতে এবং SQL কোয়েরি চালাতে সহায়তা করে। iBATIS Database Connection Setup সাধারণত SqlSessionFactory, DataSource, এবং Mapper কনফিগারেশন ব্যবহার করে করা হয়। এটি ডেটাবেস অ্যাক্সেস সহজ করে, এবং SQL কোয়েরি এবং Java objects-এর মধ্যে একটি কার্যকর সম্পর্ক স্থাপন করে।
Read more